<?php

namespace App\Services;

use Illuminate\Support\Facades\Mail;
use Illuminate\Mail\Message;
use App\Jobs\MailJob;

class MailService
{
    /**
     * 同步发送邮件
     * 
     * @param string $to      接收者
     * @param string $title   主题
     * @param string $content 内容
     * @param string $view    模板
     * @param array  $data    模板数据
     */
    public static function send($to, $title, $content, $view = null, $data = [])
    {
        if ($view) {
            Mail::send($view, $data, function (Message $message) use ($to, $title) {
                $message->to($to);
                $message->subject($title);
            });
        } else {
            Mail::raw($content, function (Message $message) use ($to, $title) {
                $message->to($to);
                $message->subject($title);
            });
        }
    }

    /**
     * 使用队列异步发送邮件
     * 
     * @param string $to      接收者
     * @param string $title   主题
     * @param string $content 内容
     * @param string $view    模板
     * @param array  $data    模板数据
     */
    public static function sendQueue($to, $title, $content, $view = null, $data = [])
    {
        dispatch(new MailJob($to, $title, $content, $view,$data));
    }

    public static function sendValidMail($to, $code)
    {
        self::send($to, '邮箱验证', '', 'mails.valid', ['code' => $code]);
    }
}
